iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 8
0

機器學習中的目標編碼
目標是算資料的平均值

https://ithelp.ithome.com.tw/upload/images/20190923/20111603YX10SxOUXu.jpg

同學原本最初的想法是用sapply寫,但我看了下需求,我寫下了group_by() %>% summarise(mean()), 再用一個left_join就可以達到目標了。先分類,然後根據每個分類的結果做平均。有點像是excel樞紐分析表(對所以我也下意識地寫出了table())

可是這個操作不會只執行一次,你有個23個變數要做這樣的目標編碼,就我對group_by()的認知,我要寫23遍一模一樣的東西。

iris_test = iris
iris_test %>% group_by(Species) %>% summarise(mean = mean(Sepal.Length))

https://ithelp.ithome.com.tw/upload/images/20190923/20111603tKw11VHl4P.png

後來我找到有點久沒用的aggregate()函數
https://ithelp.ithome.com.tw/upload/images/20190923/201116033aAcG1csaN.png

記得再寫數字的時候要用[[5]] 兩個中框號,因為他需要的是list ,沒框號的話長度會是1,便無法執行。

dat  = list()
for(i in 1 :ncol(fraud_train)-1){
dat[[i]] = data.frame(aggregate(fraud_train$fraud_ind, by=list(fraud_train[[i]]), FUN=mean))
colnames(dat[[i]]) = c(title_tab[i],title_target[i])
}

https://ithelp.ithome.com.tw/upload/images/20190923/20111603Bd6GuWkAk3.png


上一篇
R語言_給人看的程式碼_運算data.frame()時即便迴圈,也不要用數字123
下一篇
R語言_目標編碼_2
系列文
R語言 - 從「主觀感覺」轉為「客觀事實」30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言